package gamefw.uiplugin;

import gamefw.framework.Coordinate;
import gamefw.framework.Move;
import gamefw.gameplugin.ISpecialEventListener;

public interface IInputManager {

	/**
	 * Wait until the player triggers the game start button.
	 */
	public void getStartSignal();
	
	/**
	 * Get the player role (Human or Computer)
	 * 
	 * @return true if human player, false if computer player
	 */
	public boolean getPlayerRole(int playerIndex);
	
	/**
	 * Get a position from the user (e.g., by clicking on the board)
	 * 
	 * @return the position which is selected by the user.
	 */
	public Coordinate getPosition();

	/**
	 * Get a move from the user (e.g., by dragging on the board)
	 * 
	 * @return the Move object which contains the "from" position and "to" position.
	 */
	public Move getMove();
	
	/**
	 * Add a special event (e.g., save game, quit game, etc.) listener
	 * 
	 * @param listener
	 */
	public void registerSpecialEventListener(ISpecialEventListener listener);
}
